export default class myUtils {
  /**
   * 判断字符串是否为空
   * @param str
   * @returns {boolean}
   */
  static isNull(str) {
    return str == null || str.length === 0 || str === '';
  }

  /**
   *
   * @desc  判断是否为身份证号
   * @param  {String|Number} str
   * @return {Boolean}
   */
  static isIdCard(str) {
    return /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/.test(str)
  }

  /**
   *
   * @desc   判断是否为手机号
   * @param  {String|Number} str
   * @return {Boolean}
   */
  static isPhoneNum(str) {
    return /^(0|86|17951)?(1[3-9][0-9])[0-9]{8}$/.test(str)
  }

  /**
   *
   * @desc   地址拼接http://
   * @param  {String|url} str
   * @return {String}
   */
  static convertHttpUrl(url) {
    if (url.substr(0, 7).toLowerCase() == "http://" || url.substr(0, 8).toLowerCase() == "https://") {
      url = url;
    } else {
      url = "http://" + url;
    }
    return url;
  }

  /**
   *
   * @desc   表单校验
   * @param  对象
   * @return msg对象
   */
  static checkFrom(obj) {
    // 用来保存所有的属性名称和值
    var props = "";
    for (var p in obj) {
      // 方法
      if (typeof(obj[p]) == "function") {
        obj[p]();
      } else {
        // p 为属性名称，obj[p]为对应属性的值
        props += p + "=" + obj[p] + "\t";
      }
    }
    // 最后显示所有的属性
    console.log(props);
  }

  /**
   *
   * @desc   获取参数名
   * @param  {String|Number} str
   * @return {String}
   */
  static GetUrlParam(paraName) {
    var url = document.location.toString();
    var arrObj = url.split("?");
    if (arrObj.length > 1) {
      var arrPara = arrObj[1].split("&");
      var arr;
      for (var i = 0; i < arrPara.length; i++) {
        arr = arrPara[i].split("=");
        if (arr != null && arr[0] == paraName) {
          return arr[1];
        }
      }
      return "";
    } else {
      return "";
    }
  }

  static computedMaxDate(numDay){
    var startDate = new Date();
    var maxDate = new Date(startDate.setDate(startDate.getDate() + parseInt(numDay)));
    return maxDate;
  }

  static computedMinDate(numDay){
    var startDate = new Date();
    var minDate = new Date(startDate.setDate(startDate.getDate() - parseInt(numDay)));
    return minDate;
  }

  static checkPwStrong(value) {
    var strength = 0;
    if (value.length >= 6 && value.match(/[\da-zA-Z]+/)) {
      if (value.match(/\d+/)) {
        strength++;
      }
      if (value.match(/[a-z]+/)) {
        strength++;
      }
      if (value.match(/[A-Z]+/)) {
        strength++;
      }
      if (value.match(/[!@*$-_()+=&￥]+/)) {
        strength++;
      }
    }
    if (strength >= 3) {
      return true;
    }
    return false;
  }

  static isCardNo(cardNo) {
    // 身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X
    let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    if (!(reg.test(cardNo))) {
      return false;
    }
    return true;
  }

}
